// diy_mp3_player.cpp : main source file for diy_mp3_player.exe
//

#include "stdafx.h"

#include "resource.h"

#include "MainDlg.h"

CAppModule _Module;

// int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/)
// {
// 	HRESULT hRes = ::CoInitialize(NULL);
// // If you are running on NT 4.0 or higher you can use the following call instead to 
// // make the EXE free threaded. This means that calls come in on a random RPC thread.
// //	HRESULT hRes = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
// 	ATLASSERT(SUCCEEDED(hRes));
// 
// 	ULONG_PTR pToken;
// 	Gdiplus::GdiplusStartupInput input;
// 	Gdiplus::GdiplusStartup(&pToken, &input, NULL);
// 
// 	// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
// 	::DefWindowProc(NULL, 0, 0, 0L);
// 
// 	AtlInitCommonControls(ICC_BAR_CLASSES);	// add flags to support other controls
// 
// 	hRes = _Module.Init(NULL, hInstance);
// 	ATLASSERT(SUCCEEDED(hRes));
// 
// 	int nRet = 0;
// 	// BLOCK: Run application
// 	{
// 		CMainDlg dlgMain;
// 		nRet = dlgMain.DoModal();
// 	}
// 	
// 	Gdiplus::GdiplusShutdown(pToken);
// 	_Module.Term();
// 	::CoUninitialize();
// 
// 	return nRet;
// }

int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
{
	CMessageLoop theLoop;
	_Module.AddMessageLoop(&theLoop);

	CMainDlg dlgMain;

	if(dlgMain.Create(NULL) == NULL)
	{
		ATLTRACE(_T("Main dialog creation failed!\n"));
		return 0;
	}

	dlgMain.ShowWindow(nCmdShow);

	int nRet = theLoop.Run();

	_Module.RemoveMessageLoop();
	return nRet;
}

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{
	HRESULT hRes = ::CoInitialize(NULL);
	// If you are running on NT 4.0 or higher you can use the following call instead to 
	// make the EXE free threaded. This means that calls come in on a random RPC thread.
	//	HRESULT hRes = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
	ATLASSERT(SUCCEEDED(hRes));

	ULONG_PTR pToken;
	Gdiplus::GdiplusStartupInput input;
	Gdiplus::GdiplusStartup(&pToken, &input, NULL);

	// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
	::DefWindowProc(NULL, 0, 0, 0L);

	AtlInitCommonControls(ICC_BAR_CLASSES);	// add flags to support other controls

	hRes = _Module.Init(NULL, hInstance);
	ATLASSERT(SUCCEEDED(hRes));

	int nRet = Run(lpstrCmdLine, nCmdShow);

	Gdiplus::GdiplusShutdown(pToken);
	_Module.Term();
	::CoUninitialize();

	return nRet;
}
